//
//  JKStatusCell.swift
//  新浪微博
//
//  Created by Jack.Lin on 16/7/5.
//  Copyright © 2016年 Jack.Lin. All rights reserved.
//

import UIKit

/// 微博 Cell 的协议
/// 如果需要设置可选协议方法
/// - 需要遵守 NSObjectProtocol 协议
/// - 协议需要是 @objc 的
/// - 方法需要 @objc optional
@objc protocol JKStatusCellDelegate: NSObjectProtocol {
    
    /// 微博 Cell 选中 URL 字符串
    @objc optional func statusCellDidSelectedURLString(cell: JKStatusCell, urlString: String)
}

/// 微博 Cell


class JKStatusCell: UITableViewCell {
    
    /// 代理属性
    weak var delegate: JKStatusCellDelegate?


    var viewModel: JKStatusViewModel? {
      
        didSet {
           
            // 微博文本
            statusLabel.attributedText = viewModel?.statusAttrText
            // 设置被转发微博的文字
            retweetedLabel?.attributedText = viewModel?.retweetedAttrText
            
            nameLabel.text = viewModel?.status?.user?.screen_name
            
            memberView.image = viewModel?.memberIcon
           
            vipIconView.image = viewModel?.vipIcon
        
           iconView.cz_setIamge(urlString: viewModel?.status?.user?.profile_image_url, placeholderImage: UIImage(named: "avatar_default_big"), isAvatar: true)
            
            // 底部工具栏 
           toolBar.viewModel = viewModel
            
            // 配图视图视图模型
            pictureView.viewModel = viewModel
            
            // 测试修改配图视图的高度
//            pictureView.higthConS.constant = viewModel?.pictureViewSize.height ?? 0
            
            // 设置来源
            print("微博来源 \(viewModel?.status?.source)")
            sourceLabel.text = viewModel?.status?.source


        }
    }
    
    
    
    // 头像
    @IBOutlet weak var iconView: UIImageView!
    // 姓名
    @IBOutlet weak var nameLabel: UILabel!
    // 会员图标
    @IBOutlet weak var memberView: UIImageView!
    // 时间
    @IBOutlet weak var timeLabel: UILabel!
    // 来源
    @IBOutlet weak var sourceLabel: UILabel!
    // 认证图标
    @IBOutlet weak var vipIconView: UIImageView!
    // 微博正文
//    @IBOutlet weak var statusLabel: UILabel!
    @IBOutlet weak var statusLabel: FFLabel!

    // 底部视图
    @IBOutlet weak var toolBar: JKStatusToolBar!
    // 配图视图
    @IBOutlet weak var pictureView: JKStatusPictureView!
    // 被转发微博的标签 - 原创微博没有这个标签, 所以一定要 ?
//    @IBOutlet weak var retweetedLabel: UILabel?
    @IBOutlet weak var retweetedLabel: FFLabel?

   
    
    override func awakeFromNib() {
        super.awakeFromNib()
        
        // 离屏渲染 = 异步绘制 (提前在外部绘制好)
        self.layer.drawsAsynchronously = true
        
        // 栅格化 - 异步绘制之后，会生成一张独立的图像，cell在屏幕上滚动的时候，本质上滚动的是这张图片
        // cell 优化，要尽量减少图层的数量，相当于就只有一层！
        // 停止滚动之后，可以接收监听
        self.layer.shouldRasterize = true
        
        // 使用 `栅格化` 必须注意指定分辨率
        self.layer.rasterizationScale = UIScreen.main().scale

        statusLabel.delegate = self
        retweetedLabel?.delegate = self
        
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}


extension JKStatusCell: FFLabelDelegate {

    func labelDidSelectedLinkText(label: FFLabel, text: String) {
        if !text.hasPrefix("http://") {
            return
        }
    
    delegate?.statusCellDidSelectedURLString?(cell: self, urlString: text)
    }
}
